/**
*
*  Elaborado por: Roberto Loaeza Valerio.
*                 geoAPP.
*                 09-abr-2006.
*
**/
package main;



import dbClass.Levantamientos;
import dbClass.Puntos;
import language.Language;
import metodos.LevantamientoPorPoligonales;
import ewe.data.LiveTreeNode;
import ewe.filechooser.FileChooser;
import ewe.fx.Color;
import ewe.fx.Dimension;
import ewe.fx.mImage;
import ewe.io.File;
import ewe.io.IOException;
import ewe.ui.CellConstants;
import ewe.ui.Control;
import ewe.ui.Editor;
import ewe.ui.ScrollBarPanel;
import ewe.ui.Gui;
import ewe.ui.HtmlDisplay;
import ewe.ui.HtmlViewer;
import ewe.ui.Menu;
import ewe.ui.MenuBar;
import ewe.ui.MenuItem;
import ewe.ui.MessageBox;
import ewe.ui.Panel;
import ewe.ui.SingleContainer;
import ewe.ui.Window;
import ewe.ui.mButton;
import ewe.ui.mChoice;
import ewe.ui.mInput;
import ewe.ui.mLabel;
import ewe.util.Vector;



/**
 * Geo App
 * @author Roberto Loaeza Valerio
 *
 */
public class GeoApp extends  Editor {
	private Language lang = new Language(1);
	private String dataDir = "datos/";
	private boolean login = false;	
	private boolean proyectoModificado = false;
	private boolean nuevoProyecto =false;
	private Panel panelLimpio = new Panel();	
	private SingleContainer contenedor = new SingleContainer();
	private ContenedorProyecto cp;
	private Levantamientos proyecto;		
	private Color fondoApp =Color.Sand;
	private AbrirGuardar AG = new AbrirGuardar();
	private String ext =".gml";
	private boolean arbolActivo = true;
	private boolean archivoAbierto= false;
	private int scale=1;
	public GeoApp() {							
		title = lang.getTitulo(0);
		this.windowIcon	=new mImage(dataDir+lang.getMenuIcon(0), Color.White);				
		setPreferredSize(500,330);		
		windowFlagsToClear|= Window.FLAG_HAS_CLOSE_BUTTON;					 
		panelLimpio.addLast(new mLabel(""));		
		addLast(LoadMenus()).setCell(VCONTRACT);
		contenedor.setControl(panelLimpio);
		addLast(contenedor);
		contenedor.backGround = fondoApp;		
		login = true;		
	}	
	
	/**
	 * Carga los menus
	 * @return MenuBar que contiene todos los menus
	 */
	private MenuBar LoadMenus() {
		
		
		MenuBar mb = new MenuBar();
		String nMenu = "";		
		Menu m = new Menu();
		MenuItem mSeparator =new  MenuItem();
		mSeparator.modifiers = MenuItem.Separator;		
		for(int i=0; i<lang.getSizeMenu(); i++ ) {
			if(lang.getMenu(i).equalsIgnoreCase(lang.separatorMenu1)) {
				nMenu = lang.getMenu(i+1);
			}
			else if(lang.getMenu(i).equalsIgnoreCase(lang.separatorMenu2)) {				
				mb.addMenu(m,nMenu);								
				m= new Menu();
			}
			else if(!(lang.getMenu(i-1).equalsIgnoreCase(lang.separatorMenu1))){
				if(lang.getMenu(i).equalsIgnoreCase("-")) 
					m.addItem(mSeparator);			
				else {					
						m.addItem(new MenuItem(lang.getMenu(i),dataDir + lang.getMenuIcon(i), Color.White));
				}
										
			}
			
		}		
		return mb;
	}
	
	/**
	 * 
	 * 
	 *  MENUS
	 * 
	 * 
	 */
	public boolean handleAction(String action) {
		//Archivo->Salir
		if(action.equals(lang.getMenu2(8))) {
			if(proyectoModificado) {
				if(Confirmacion(lang.getTitulo(0),lang.getDescripcion(2))) {
					exit(1);					
				}				
			}
			else {
				exit(1);
			}						
		}
		//Ayuda->Acerca de
		else if(action.equals(lang.getMenu2(32)))
		{							
			HtmlDisplay hd = new HtmlDisplay(12,20);
			hd.setHtml(lang.getDescripcion(0));
			hd.modify(DisplayOnly,0);			
			msgAyuda(hd, lang.getTitulo(0));						
		}
		//Ayuda->Manual
		else if(action.equals(lang.getMenu2(33)))
		{	
			try {
				HtmlViewer htmlV = new HtmlViewer(HtmlViewer.DISPLAY_NO_STATUS_BAR|HtmlViewer.DISPLAY_NO_TOOL_BUTTONS|HtmlViewer.DISPLAY_NO_TABS);				
				htmlV.doOpen(File.getProgramDirectory()+"/"+dataDir+"ayuda/index.htm");
				htmlV.htmlProperties.set("maxImageSize",null);
				htmlV.setTitle(lang.getTitulo(0));
				htmlV.windowTitle=lang.getTitulo(0);
				htmlV.setTopLevelTitle(lang.getTitulo(0));
				htmlV.setPreferredSize(425,350);
				htmlV.show();				
			} catch(NullPointerException e) {
				Aviso(lang.getTitulo(0), e.toString());
			}
		}
		

		/*
		 * 
		 */
		else if(login) {
			//Archivo->Nuevo
			if(action.equals(lang.getMenu2(2))) {
				if(Nuevo()) {
					Aviso(lang.getTitulo(0),"Proyecto creado");
					nuevoProyecto=true;
					archivoAbierto=true;
				}
				else 
					Aviso(lang.getTitulo(0),lang.getError(6));
			}	
			//Archivo->Abrir
			else if(action.equals(lang.getMenu2(3)))
			{
				if(proyectoModificado) {
					if(Confirmacion(lang.getTitulo(0),lang.getDescripcion(2))) {
						if(!AbrirProyecto()) { 				
							Aviso(lang.getTitulo(0),lang.getError(7));
						}else {
							archivoAbierto=true;
							nuevoProyecto=false;
						}
					}
				}
				else {
					if(!AbrirProyecto()) 				
						Aviso(lang.getTitulo(0),lang.getError(7));
					else {
						archivoAbierto=true;
						nuevoProyecto=false;
					}
				}
			}
			else if(archivoAbierto) {							
				//Archivo->Guardar
				if(action.equals(lang.getMenu2(4))) {
					if(this.proyectoModificado||nuevoProyecto)
						if(Guardar())
						{
							Aviso(lang.getTitulo(0),lang.getDescripcion(3));
							this.proyectoModificado = false;
							nuevoProyecto=false;
						}
						else {
							Aviso(lang.getTitulo(0),lang.getError(4));
						}
				}
				//Archivo->GuardarComo
				else if(action.equals(lang.getMenu2(5))) {
					if(GuardarComo())
						Aviso(lang.getTitulo(0),lang.getDescripcion(3));
					else
						Aviso(lang.getTitulo(0),lang.getError(4));
				}
				//Archivo->Cerrar
				else if(action.equals(lang.getMenu2(6))) {								
					if(this.proyectoModificado)
					{
						if(Confirmacion(lang.getTitulo(0),lang.getDescripcion(2))) {
							CerrarProyecto();							
						}					
					}					
					else
						CerrarProyecto();
				}
				
				//	Levantamiento->Datos Generales
				else if(action.equals(lang.getMenu2(12))) { 
					ModificarDatosProyecto();				
				}
				//Levantamiento->Croquis
				else if(action.equals(lang.getMenu2(14))) { 
					Croquis();				
				}
				// Levantamiento->Planilla
				else if(action.equals(lang.getMenu2(15))) { 
					Planilla();				
				}
				//Levantamiento->Activar rumbo o azimut
				else if(action.equals(lang.getMenu2(16))) { 
					ActivarRumboInicial();
				}
				//Levantamiento->Exportar a DXF
				else if(action.equals(lang.getMenu2(18))) { 
					ExportarDXF();
				}
				//Estaciones->Nueva
				else if(action.equals(lang.getMenu2(22))) { 
					AgregarEstacion();				
				}
				//Estaciones->Modificar
				else if(action.equals(lang.getMenu2(23))) { 
					ModificarEstacion();				
				}
				
				// Estaciones->Eliminar
				else if(action.equals(lang.getMenu2(24))) { 
					EliminarEstacion();				
				}
				//Estaciones->Radiacion Auxiliar
				else if(action.equals(lang.getMenu2(26))) { 
					RadiacionAuxiliar();				
				}
				//Estaciones->Mostrar Arbol
				else if(action.equals(lang.getMenu2(28))) { 
					MostrarArbol();				
				}			
			}
			else {
				Aviso(lang.getTitulo(0),lang.getError(11));
			}
		}		
		else if(!login) {						
			Aviso(lang.getTitulo(1),lang.getError(1));
		}
	    	return super.handleAction(action);	
	}
	
	/***
	 * 
	 * 
	 * 
	 * FUNCIONES MENU 
	 * 
	 * 
	 */
	
	
	//
	// MENU ARCHIVO
	//
	private boolean Nuevo() {
		Levantamientos le =new Levantamientos();		
		String []sCampos = new String[14];
		boolean status = false;
		sCampos[0] = lang.getTitulo(5);
		sCampos[1] = lang.getTitulo(6);
		sCampos[2] = lang.getTitulo(7);
		sCampos[3] = lang.getTitulo(8);
		sCampos[4] = lang.getTitulo(47);
		sCampos[5] = lang.getTitulo(48);
		sCampos[6] = lang.getTitulo(9);									
		sCampos[7] = lang.getTitulo(11);
		sCampos[8] = lang.getTitulo(14);
		
		
		
		
		sCampos[9] = lang.getTitulo(61);
		sCampos[10] = lang.getBoton(0);
		sCampos[11] = lang.getBoton(1);
		sCampos[12] = dataDir;
		sCampos[13] = lang.getTitulo(0);
		
		
		
		DatosProyecto datosProyecto = new DatosProyecto(sCampos, lang.getTitulo(10), lang.getTitulo(12));		
		while((((mInput)datosProyecto.campos.get(0)).getText().toString().length())<3 )
		{
			if(status)
				Aviso(lang.getTitulo(0), lang.getError(8));					
			status = msgEntrada(datosProyecto,lang.getTitulo(0));
			le.nombre =((mInput)datosProyecto.campos.get(0)).getText().toString();
			le.propietario=((mInput)datosProyecto.campos.get(1)).getText().toString();
			le.ubicacion =((mInput)datosProyecto.campos.get(2)).getText().toString();
			le.descripcion=((mInput)datosProyecto.campos.get(3)).getText().toString();
			
			le.levanto=((mInput)datosProyecto.campos.get(4)).getText().toString();
			le.reviso=((mInput)datosProyecto.campos.get(5)).getText().toString();
			
			le.tolerancia=((mChoice)datosProyecto.campos.get(6)).selectedIndex;
			le.azirumbo=((mChoice)datosProyecto.campos.get(7)).selectedIndex;
			le.nSuelo = ((mButton)datosProyecto.campos.get(8)).getText().toString();
			if(!status)
				break;
		}
		if(status) {
			le.puntos = new Vector();			
			le.cont = 0;		
			proyecto = le;	
			contenedor.setControl(cp = new ContenedorProyecto(proyecto), true);
			arbolActivo=true;
			proyectoModificado = true;
			nuevoProyecto = true;
			AG = new AbrirGuardar();
			
		}		
		return status;								
	}
	private boolean AbrirProyecto() {
		proyectoModificado = false;
		FileChooser abrirProyec = new FileChooser();
		abrirProyec.mask = "*"+ext;
		if(abrirProyec.execute(getFrame(), Gui.CENTER_FRAME)==IDCANCEL)			
			return false;
		else {
			proyecto = new Levantamientos();			
			AG.setArchivo(abrirProyec.file);						
			contenedor.setControl(cp = new ContenedorProyecto(proyecto =AG.CargarXML()), true);
			return true;
		}
	}
	private boolean Guardar() {
		proyecto.puntos = new Vector();
		Puntos _puntos = new Puntos();
		cp.treeModel.expansionLevel=3;
		for(int i=0; i<cp.treeModel.countTotalChildNodes(0)+1;i++) {			
			if(((LiveTreeNode)cp.treeModel.getTreeNodeAt(i)) instanceof Puntos) {
				_puntos=(Puntos)cp.treeModel.getTreeNodeAt(i);
				_puntos.estacion = i;
				proyecto.puntos.add(_puntos);
			}
		}
		proyecto.cont = proyecto.puntos.size();		
		AG.setProyecto(proyecto);
		if(nuevoProyecto)
		{
			FileChooser fc = new FileChooser(FileChooser.SAVE,proyecto.nombre+ext);
			fc.mask=proyecto.nombre+ext;
			if(fc.execute(getFrame(),Gui.CENTER_FRAME)!=IDCANCEL) {
				AG.setArchivo(fc.file);
				this.nuevoProyecto = false;
			}
		}
		return AG.Levantamiento2XML()?true:false;		
	}	
	private boolean GuardarComo() {
		this.nuevoProyecto = true;
		return Guardar();
		
	}
	
	
	private boolean CerrarProyecto() {
		contenedor.setControl(panelLimpio,true);
		arbolActivo=false;
		proyectoModificado = false;
		nuevoProyecto = false;
		archivoAbierto=false;		
		AG = new AbrirGuardar();
		return true;
	}				
	//
	// MENU LEVANTAMIENTO
	//
	
	private void ModificarDatosProyecto() {
		String []sCampos = new String[14];								
		sCampos[0] = lang.getTitulo(5);
		sCampos[1] = lang.getTitulo(6);
		sCampos[2] = lang.getTitulo(7);
		sCampos[3] = lang.getTitulo(8);
		sCampos[4] = lang.getTitulo(47);
		sCampos[5] = lang.getTitulo(48);
		sCampos[6] = lang.getTitulo(9);									
		sCampos[7] = lang.getTitulo(11);
		sCampos[8] = lang.getTitulo(14);		
		sCampos[9] = lang.getTitulo(61);
		sCampos[10] = lang.getBoton(0);
		sCampos[11] = lang.getBoton(1);
		sCampos[12] = dataDir;
		sCampos[13] = lang.getTitulo(0);
		
		
		
				
		DatosProyecto datosProyecto = new DatosProyecto(sCampos, lang.getTitulo(10), lang.getTitulo(12));
		datosProyecto.setValores(proyecto);
		if(msgEntrada(datosProyecto,lang.getTitulo(0))) {
			proyecto.nombre      = ((mInput)datosProyecto.campos.get(0)).getText().toString();
			proyecto.propietario = ((mInput)datosProyecto.campos.get(1)).getText().toString();
			proyecto.ubicacion   = ((mInput)datosProyecto.campos.get(2)).getText().toString();
			proyecto.descripcion = ((mInput)datosProyecto.campos.get(3)).getText().toString();
			proyecto.levanto     = ((mInput)datosProyecto.campos.get(4)).getText().toString();
			proyecto.reviso      = ((mInput)datosProyecto.campos.get(5)).getText().toString();
			proyecto.tolerancia  = ((mChoice)datosProyecto.campos.get(6)).selectedIndex;
			proyecto.azirumbo    = ((mChoice)datosProyecto.campos.get(7)).selectedIndex;
			proyecto.nSuelo 		 = ((mButton)datosProyecto.campos.get(8)).getText().toString();
			proyectoModificado   =  true;			
			contenedor.setControl(cp = new ContenedorProyecto(proyecto), true);
			arbolActivo=true;
		}
	}
	private void Croquis( ) {
		LevantamientoPorPoligonales lpp = new LevantamientoPorPoligonales(lang);
		int j=0;
		Puntos _puntos[] = new Puntos[proyecto.cont];
		cp.treeModel.expansionLevel=3;
		for(int i=0; i<cp.treeModel.countTotalChildNodes(0)+1;i++) {			
			if(((LiveTreeNode)cp.treeModel.getTreeNodeAt(i)) instanceof Puntos) {
				_puntos[j++]=(Puntos)cp.treeModel.getTreeNodeAt(i);
			}
		}
		
		lpp.setValores(_puntos, proyecto.cont,proyecto.azimut_inicial,proyecto.tolerancia);		
		lpp.Calcular();
		Dimension dx =new Dimension();
		
		getPreferredSize(dx);
		
		mButton zoomin = new mButton(lang.getTitulo(63));
		mButton zoomout = new mButton(lang.getTitulo(64));
		Panel ptmp = new Panel();
		
		Panel ptmp2 = new Panel();
		Panel ptmp3 = new Panel();
		ptmp.addNext(zoomin);
		ptmp.addLast(new ewe.ui.mLabel(" Area = " + lpp.area));
		ptmp.addNext(zoomout);
		ptmp.addLast(new ewe.ui.mLabel(" Perimetro  "+ lpp.perimetro));	
		ptmp2.addLast(new ScrollBarPanel(lpp.CargarImagen(proyecto.tolerancia,dx.width,dx.height,scale)) );
		ptmp3.addLast(ptmp);
		ptmp3.addLast(ptmp2);
		contenedor.setControl(new ScrollBarPanel(lpp.CargarImagen(proyecto.tolerancia,dx.width,dx.height,scale)), true);
		arbolActivo=false;
		
	}
	private void Planilla( ) {
		LevantamientoPorPoligonales lpp = new LevantamientoPorPoligonales(lang);
		int j=0;
		Puntos _puntos[] = new Puntos[proyecto.cont];
		cp.treeModel.expansionLevel=3;
		for(int i=0; i<cp.treeModel.countTotalChildNodes(0)+1;i++) {			
			if(((LiveTreeNode)cp.treeModel.getTreeNodeAt(i)) instanceof Puntos) {
				_puntos[j++]=(Puntos)cp.treeModel.getTreeNodeAt(i);
			}
		}
		
		lpp.setValores(_puntos, proyecto.cont, proyecto.azimut_inicial, proyecto.tolerancia);		
		lpp.Calcular();
		this.contenedor.setControl(lpp.CargarTabla(proyecto.tolerancia), true);
		if(lpp.getErrors()) {
			if(Confirmacion(lang.getTitulo(0), lang.getError(12)) ) {
				this.msgSalida(lpp.isReporte, lang.getTitulo(0));
			}
		}
		
		arbolActivo=false;
	}
	
	
	
	
	private void ExportarDXF( ) {
		LevantamientoPorPoligonales lpp = new LevantamientoPorPoligonales(lang);
		int j=0;
		Puntos _puntos[] = new Puntos[proyecto.cont];
		cp.treeModel.expansionLevel=3;
		for(int i=0; i<cp.treeModel.countTotalChildNodes(0)+1;i++) {			
			if(((LiveTreeNode)cp.treeModel.getTreeNodeAt(i)) instanceof Puntos) {
				_puntos[j++]=(Puntos)cp.treeModel.getTreeNodeAt(i);
			}
		}
		
		lpp.setValores(_puntos, proyecto.cont, proyecto.azimut_inicial,proyecto.tolerancia);		
		lpp.Calcular();
		try {
			if(lpp.DXF(proyecto)){
				Aviso2(lang.getTitulo(0),lang.getDescripcion(8));
			}else {
				Aviso2(lang.getTitulo(0),lang.getError(10));
			}
		} catch (IOException e) {
			Aviso2(lang.getTitulo(0),lang.getError(10)+"\n"+e.toString());
		}
		
		if(lpp.getErrors()) {
			if(Confirmacion(lang.getTitulo(0), lang.getError(12)) ) {
				this.msgSalida(lpp.isReporte, lang.getTitulo(0));
			}
		}
	}
	//
	// MENU ESTACIONES
	//
	private boolean AgregarEstacion() {
		if(!arbolActivo)
			contenedor.setControl(cp, true);
		arbolActivo=true;
		String d[] = new String[5];
		d[0]= lang.getTitulo(15);
		d[1]= lang.getTitulo(16);
		d[2]= lang.getTitulo(17);
		d[3]= lang.getTitulo(23);
		d[4]= lang.getTitulo(62);
		LecturaNaM lnam = new LecturaNaM(d,proyecto.azirumbo);
		if(msgEntrada(lnam,lang.getTitulo(0))) {
			Puntos p = lnam.getValues();
			p.estacion = ++proyecto.cont;
			cp.group.addChild(p);
			cp.tree.getTreeTableModel().setRootObject(cp.group);
			cp.tree.update(true);			
			cp.treeModel.expandToLevel(2);
			cp.tree.repaint();
			contenedor.repaint();
			proyectoModificado = true;
			return true;
		}
		else {
			return false;
		}
		
	}
	private void ModificarEstacion() {	
		if(!arbolActivo)
			contenedor.setControl(cp, true);
		arbolActivo=true;
		Puntos puntos =new Puntos();
		LiveTreeNode tn;						
		if( (tn = (LiveTreeNode)cp.treeModel.getTreeNodeAt(cp.treeModel.selectedLine)) instanceof Puntos) {
			puntos.copyFrom(tn);
			String d[] = new String[5];
			d[0]= lang.getTitulo(15);
			d[1]= lang.getTitulo(16);
			d[2]= lang.getTitulo(17);
			d[3]= lang.getTitulo(23);
			d[4]= lang.getTitulo(62);
			LecturaNaM lnam = new LecturaNaM(d,proyecto.azirumbo);
			lnam.setValues(puntos);
			if(msgEntrada(lnam,lang.getTitulo(0))) {				
				((Puntos)tn).copyFrom(lnam.getValues());				
				cp.treeModel.paintLine(cp.treeModel.selectedLine);	
				proyectoModificado = true;			
			}
		}
		else {
			Aviso(lang.getTitulo(0),lang.getError(5));
		}
	}
	private void EliminarEstacion() {
		if(!arbolActivo)
			contenedor.setControl(cp, true);
		arbolActivo=true;
		LiveTreeNode tn;
		if( (tn = (LiveTreeNode)cp.treeModel.getTreeNodeAt(cp.treeModel.selectedLine)) instanceof Puntos) {			
			if(Confirmacion(lang.getTitulo(0),lang.getDescripcion(5))) {
				LiveTreeNode p = (LiveTreeNode)tn.getParent();
				cp.tree.deleteAndUpdate(tn,p);
				proyectoModificado = true;
				proyecto.cont--;
			}
		}
		else {
			Aviso(lang.getTitulo(0),lang.getError(5));
		}
	}
	private boolean RadiacionAuxiliar() {
		if(!arbolActivo)
			contenedor.setControl(cp, true);
		arbolActivo = true;
		String nCampos[] = new String[8];
		nCampos[0]= lang.getTitulo(55);
		nCampos[1]= lang.getTitulo(56);
		nCampos[2]= lang.getTitulo(57);
		nCampos[3]= lang.getTitulo(58);
		nCampos[4]= lang.getBoton(3);
		nCampos[5]= lang.getTitulo(59);
		nCampos[6]= lang.getTitulo(60);		
		nCampos[7]= dataDir+lang.getBotonIcon(3);		
		RadiacionAuxiliar ra = new RadiacionAuxiliar(nCampos);
		if(msgEntrada(ra, lang.getTitulo(0))) {
			if(this.Confirmacion(lang.getTitulo(0),lang.getDescripcion(7))) {
				String d[] = new String[4];
				d[0]= lang.getTitulo(15);
				d[1]= lang.getTitulo(16);
				d[2]= lang.getTitulo(17);
				d[3]= lang.getTitulo(23);
				ra.calcularValores();
				Puntos p = new Puntos();
				p.angulo = ra.getAngulo();
				p.distancia = ra.getDistancia();
				p.descripcion="";
				p.azimut1 = -1;			
				LecturaNaM lnam = new LecturaNaM(d,proyecto.azirumbo);
				lnam.setValues(p);			
				if(msgEntrada(lnam,lang.getTitulo(0))) {
					p = lnam.getValues();
					p.estacion = ++proyecto.cont;
					cp.group.addChild(p);
					cp.tree.getTreeTableModel().setRootObject(cp.group);
					cp.tree.update(true);			
					cp.treeModel.expandToLevel(2);
					cp.tree.repaint();
					contenedor.repaint();
					proyectoModificado = true;
					return true;
				}
				else {
					return false;
				}
			}
		}
		return false;		
	}
	private void MostrarArbol() {
		if(!arbolActivo)
			contenedor.setControl(cp, true);
		arbolActivo=true;
	}
	
	private void ActivarRumboInicial() {		
		Puntos _puntos[] = new Puntos[proyecto.cont];
		int j = 0;
		cp.treeModel.expansionLevel=3;
		for(int i=0; i<cp.treeModel.countTotalChildNodes(0)+1;i++) {			
			if(((LiveTreeNode)cp.treeModel.getTreeNodeAt(i)) instanceof Puntos) {
				_puntos[j++]=(Puntos)cp.treeModel.getTreeNodeAt(i);
			}
		}
	
		String rumbos="";
		for(int i=0; i<proyecto.cont; i++) {
			if(_puntos[i].azimut1!=-1	)
			rumbos+=(rumbos.length()>0)?"|"+String.valueOf(i+1):String.valueOf(i+1);
		}
		mChoice RInicial = new mChoice(rumbos,0);
		MessageBox meb = new MessageBox(lang.getTitulo(0),"", MessageBox.MBOKCANCEL);		
		meb.addLast(new mLabel(lang.getDescripcion(6)));
		meb.addLast(new mLabel(""));		
		meb.addNext(new mLabel(lang.getTitulo(13)+":"));
		meb.addLast(RInicial);					
		if(meb.execute(getFrame(), Gui.CENTER_FRAME )==MessageBox.IDOK) {
			proyecto.azimut_inicial =Integer.valueOf(RInicial.getText()).intValue();	
			proyecto.azimut_inicial--;
			proyectoModificado = true;
		}
	}
	
	
	/**
	 * 
	 * 
	 * FUNCIONES ADICIONALES
	 * 
	 * 
	 */
	private boolean Confirmacion(String titulo, String msg) {
		MessageBox aviso = new MessageBox(titulo, msg,MessageBox.YESB+MessageBox.NOB);        
        aviso.doBeep=false; 
        aviso.icon = new mImage(dataDir+"icons/aviso.png", Color.White);
        aviso.backGround = fondoApp;        
        return (aviso.execute(getFrame(), Gui.CENTER_FRAME) == MessageBox.YESB)?true:false;        
	}	
	private void Aviso(String titulo, String msg) {
		MessageBox aviso = new MessageBox(titulo, msg,MessageBox.OKB);        
        aviso.doBeep=false; 
        aviso.icon = new mImage(dataDir+"icons/aviso.png", Color.White);
        aviso.backGround = fondoApp;        
        aviso.execute(getFrame(), Gui.CENTER_FRAME);
        
	}
	private void Aviso2(String titulo, String msg) {
		MessageBox aviso = new MessageBox(titulo, msg,MessageBox.OKB);        
        aviso.doBeep=false; 
        //aviso.icon = new mImage(dataDir+"icons/aviso.png", Color.White);
        aviso.backGround = fondoApp;        
        aviso.execute(getFrame(), Gui.CENTER_FRAME);        
	}		
	private boolean msgEntrada(Control ob, String titulo) {
		MessageBox mb = new MessageBox(titulo, "",MessageBox.MBOKCANCEL);        
        mb.doBeep=false; 
        mb.addLast(ob);
        mb.backGround = fondoApp;
        if(mb.execute(getFrame(), Gui.CENTER_FRAME)==IDOK)        
        		return true;
        else
        		return false;
	}
	private void msgSalida(Control ob, String titulo) {
		MessageBox mb = new MessageBox(titulo, "",MessageBox.MBOK);        
        mb.doBeep=false; 
        mb.addLast(ob,CellConstants.HSTRETCH,CellConstants.DONTFILL);
        mb.backGround = fondoApp;
        mb.execute(getFrame(), Gui.CENTER_FRAME); 
        		
	}
	private void msgAyuda(Control ob, String titulo) {
		MessageBox mb = new MessageBox(titulo, "",MessageBox.MBOK);        
        mb.doBeep=false; 
        mb.addLast(ob);
        mb.backGround = fondoApp;
        mb.execute(getFrame(), Gui.CENTER_FRAME); 
        		
	}	
}
